#pragma once
#include "nnse_support.h"

namespace SimpleGUI
{
	template <class T, class U> public ref class Dendrite : public System::Windows::Forms::Form
	{
		// Constructor and Destructor
			public: Dendrite(nnse::dendrite<T, U>^ p);
			protected: virtual ~Dendrite();
		// Member Variables
			private: System::ComponentModel::Container^ components;
			private: System::Windows::Forms::Label^  number_label;
			private: System::Windows::Forms::TextBox^  number_textBox;
			private: System::Windows::Forms::Label^  weight_label;
			private: System::Windows::Forms::TextBox^  weight_textBox;
			private: System::Windows::Forms::Label^  input_label;
			private: System::Windows::Forms::TextBox^  input_textBox;
			private: System::Windows::Forms::Label^  output_label;
			private: System::Windows::Forms::TextBox^  output_textBox;
			private: System::Windows::Forms::Label^  previous_weight_change_label;
			private: System::Windows::Forms::TextBox^  previous_weight_change_textBox;
			private: nnse::dendrite<T, U>^ parent;
		// GUI Functions
			private: System::Void form_closed(System::Object^  sender, System::Windows::Forms::FormClosedEventArgs^  e);
			public: System::Void update_form();
#pragma region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		void InitializeComponent(void)
		{
			this->number_label = (gcnew System::Windows::Forms::Label());
			this->input_label = (gcnew System::Windows::Forms::Label());
			this->weight_label = (gcnew System::Windows::Forms::Label());
			this->output_label = (gcnew System::Windows::Forms::Label());
			this->previous_weight_change_label = (gcnew System::Windows::Forms::Label());
			this->number_textBox = (gcnew System::Windows::Forms::TextBox());
			this->weight_textBox = (gcnew System::Windows::Forms::TextBox());
			this->input_textBox = (gcnew System::Windows::Forms::TextBox());
			this->output_textBox = (gcnew System::Windows::Forms::TextBox());
			this->previous_weight_change_textBox = (gcnew System::Windows::Forms::TextBox());
			this->SuspendLayout();
			// 
			// number_label
			// 
			this->number_label->AutoSize = true;
			this->number_label->Location = System::Drawing::Point(12, 9);
			this->number_label->Name = L"number_label";
			this->number_label->Size = System::Drawing::Size(47, 13);
			this->number_label->TabIndex = 0;
			this->number_label->Text = L"Number:";
			// 
			// input_label
			// 
			this->input_label->AutoSize = true;
			this->input_label->Location = System::Drawing::Point(12, 59);
			this->input_label->Name = L"input_label";
			this->input_label->Size = System::Drawing::Size(34, 13);
			this->input_label->TabIndex = 1;
			this->input_label->Text = L"Input:";
			// 
			// weight_label
			// 
			this->weight_label->AutoSize = true;
			this->weight_label->Location = System::Drawing::Point(12, 34);
			this->weight_label->Name = L"weight_label";
			this->weight_label->Size = System::Drawing::Size(44, 13);
			this->weight_label->TabIndex = 2;
			this->weight_label->Text = L"Weight:";
			// 
			// output_label
			// 
			this->output_label->AutoSize = true;
			this->output_label->Location = System::Drawing::Point(12, 84);
			this->output_label->Name = L"output_label";
			this->output_label->Size = System::Drawing::Size(42, 13);
			this->output_label->TabIndex = 3;
			this->output_label->Text = L"Output:";
			// 
			// previous_weight_change_label
			// 
			this->previous_weight_change_label->AutoSize = true;
			this->previous_weight_change_label->Location = System::Drawing::Point(12, 109);
			this->previous_weight_change_label->Name = L"previous_weight_change_label";
			this->previous_weight_change_label->Size = System::Drawing::Size(128, 13);
			this->previous_weight_change_label->TabIndex = 4;
			this->previous_weight_change_label->Text = L"Previous Weight Change:";
			// 
			// number_textBox
			// 
			this->number_textBox->Location = System::Drawing::Point(146, 6);
			this->number_textBox->Name = L"number_textBox";
			this->number_textBox->Size = System::Drawing::Size(100, 20);
			this->number_textBox->TabIndex = 5;
			// 
			// weight_textBox
			// 
			this->weight_textBox->Location = System::Drawing::Point(146, 31);
			this->weight_textBox->Name = L"weight_textBox";
			this->weight_textBox->Size = System::Drawing::Size(100, 20);
			this->weight_textBox->TabIndex = 6;
			// 
			// input_textBox
			// 
			this->input_textBox->Location = System::Drawing::Point(146, 56);
			this->input_textBox->Name = L"input_textBox";
			this->input_textBox->Size = System::Drawing::Size(100, 20);
			this->input_textBox->TabIndex = 7;
			// 
			// output_textBox
			// 
			this->output_textBox->Location = System::Drawing::Point(146, 81);
			this->output_textBox->Name = L"output_textBox";
			this->output_textBox->Size = System::Drawing::Size(100, 20);
			this->output_textBox->TabIndex = 8;
			// 
			// previous_weight_change_textBox
			// 
			this->previous_weight_change_textBox->Location = System::Drawing::Point(146, 106);
			this->previous_weight_change_textBox->Name = L"previous_weight_change_textBox";
			this->previous_weight_change_textBox->Size = System::Drawing::Size(100, 20);
			this->previous_weight_change_textBox->TabIndex = 9;
			// 
			// Dendrite
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(259, 139);
			this->Controls->Add(this->previous_weight_change_textBox);
			this->Controls->Add(this->output_textBox);
			this->Controls->Add(this->input_textBox);
			this->Controls->Add(this->weight_textBox);
			this->Controls->Add(this->number_textBox);
			this->Controls->Add(this->previous_weight_change_label);
			this->Controls->Add(this->output_label);
			this->Controls->Add(this->weight_label);
			this->Controls->Add(this->input_label);
			this->Controls->Add(this->number_label);
			this->Name = L"Dendrite";
			this->Text = L"Dendrite";
			this->FormClosed += gcnew System::Windows::Forms::FormClosedEventHandler(this, &Dendrite::form_closed);
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion
	};
}
